package com.hym.network;

import org.json.JSONObject;

import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.hym.hymvolley.AppController;

import android.content.Context;
import android.widget.Toast;

/**
 * Class description: 封装好的network工具类
 * <li>对Volley错误信息的封装
 * @author HuYuMian
 * @QQ 732476506
 * @date 2015-7-13
 * @version 1.5
 * @modification
 */

public class NetWork {
	/*
	 * 一些说明：
	 * 1.为什么对错误处理进行封装？
	 * 使用过volley的都知道，volley的监听错误提示都是NoConnectionError。
	 * 为了给用户提示的友好性，所以要对具体的错误类型进行不同的返回信息的处理。
	 */
	private Context mContext;
	private String mTag;

	/**
	 * 以类名做为tag的构造函数
	 * 
	 * @param context
	 * @param cls
	 */
	public NetWork(Context context, Class<?> cls) {
		this.mContext = context;
		this.mTag = cls.getName();
	}

	/**
	 * 以字符串做为tag的构造函数
	 * 
	 * @param context
	 * @param tag
	 */
	public NetWork(Context context, String tag) {
		this.mContext = context;
		this.mTag = tag;
	}
	
	/**
	 * Volley 进行网络请求，失败的回调
	 * @author hym
	 *
	 */
	private class strErrorListener implements ErrorListener{

		@Override
		public void onErrorResponse(VolleyError error) {
			// TODO Auto-generated method stub
			Toast.makeText(mContext,error.getMessage() ,Toast.LENGTH_SHORT).show();
		}
		
	} 

	/**
	 * 取消当前页面的请求队列
	 */
	protected void onStop() {
		AppController.getInstance().cancelPendingRequests(mTag);
	}

	public void GetRequest(String url){
		/**Constructor which defaults to GET if jsonRequest is null, POST otherwise*/
		JsonObjectRequest jObjectRequest=new JsonObjectRequest(url, null, new Listener<JSONObject>() {

			@Override
			public void onResponse(JSONObject response) {
				// TODO Auto-generated method stub
				
			}//TODO:正在对错误的信息进行封装
		},new strErrorListener());
	}
}
